package main;

import aboutbook.BookList;
import aboutuser.AdminUser;
import aboutuser.NormalUser;
import aboutuser.User;
import tool.IOperation;

import java.util.Scanner;

public class Main {

    //在开始之前 先完成 必要的操作
    public static User login(){
        System.out.println("请输入你的姓名");
        Scanner myScanner = new Scanner(System.in);
        String name = myScanner.nextLine();
        System.out.println("请选择你的身份");
        System.out.println("1. 管理用户    2. 普通用户");
        int choice = myScanner.nextInt();
        if(choice == 1){
            AdminUser adminUser = new AdminUser(name);
            return adminUser;

            //下面方法 虽然可以 但只是 只是此处方便 但不利于 之后 代码的执行
            //adminUser.menu();

        } else{
            NormalUser normalUser = new NormalUser(name);
            return normalUser;

            //
            //normalUser.menu();
        }

    }

    public static void main(String[] args) {

        //创建一个 书架引用
        // 并 借用 new 对象时通过构造方法 进行的初始化
        BookList bookList = new BookList();

        //静态方法  不需要 通过 对象引用名调用
        //也就是说 静态方法 的调用 不需要对象
        User user = login();
        //通过 动态绑定（多态）
        // 实现
        // 通过 父类引用.方法名  实现  子类自己重写父类方法后的方法
        //在 此即 根据选择 打印 管理用户菜单 还是 普通用户菜单
        int choice = user.menu();
        //这里可以选择 直接 写出 doIOperation方法 的内容
        //但 这里选择 直接 这样写的原因是为了 封装方法的内容 使他人不可见
        user.doIOperation(choice,bookList);



    }
}
